草庐IT

pointers - 复制或传递指针

全部标签

go - 为什么结构可以作为函数的接口(interface)传递?

我有一些examplecode将接口(interface)作为输入,如下所示。typeRouteGuideServerinterface{...}funcRegisterRouteGuideServer(s*grpc.Server,srvRouteGuideServer){s.RegisterService(&_RouteGuide_serviceDesc,srv)}一切都很好,但是当实现这个服务器时,我们有以下代码,它为函数提供了一个结构(实现接口(interface)),如下所示。typerouteGuideServerstruct{...}...pb.RegisterRouteG

pointers - golang 中的指针

这个问题在这里已经有了答案:Whydoesjson.Unmarshalworkwithreferencebutnotpointer?(4个答案)关闭4年前。我正在使用golang来解析一个json字符串:str:="{...}"varfinterface{}json.Unmarshal([]byte(str),f)fmt.Println(f)虽然我在控制台中得到了nil。当我将代码更改为:json.Unmarshal([]byte(str),&f)它将打印json字符串。这是怎么回事?

go - 如何在单个函数中传递多种类型的数组

我有多个结构typeBasestruct{IdstringNamestringCodestring}typeCountrystruct{Base...}typeCitystruct{Base...}而且我需要创建一个函数,该函数接受城市或国家/地区数组。目前,我为每种类型都有一个功能,它正在做同样的事情,我想这不是最好/好的方法!谢谢 最佳答案 看起来您正在尝试在Go中重新创建类继承。Go故意没有类继承。不要试图重新创建它。我相信您在想“国家是基地”。那是不正确的。国家嵌入基地。那不是一回事。这对你如何命名事物很重要。在这种情况下,

go - 将文件复制到文件夹中,直到达到一定大小

我有一个名为“myfolder”的文件夹,其中包含一些txt和jpeg文件以及一个名为“test”的文件夹。我想复制我的文件夹中的文件进行测试,直到它达到一定大小,例如10MB,然后停止复制。这是我的代码,但不起作用:packagemainimport("errors""fmt""io/ioutil""os""path/filepath""strconv")var(MyFolderPath="/home/jim/myfolder"files[]string)funccopy(source[]string,destinationstring){fora,b:=rangesource{in

go - 将可执行的 golang 文件复制到另一个文件夹

我想知道是否可以将正在运行的.exe文件复制到另一个文件夹。我正在尝试使用Go中通常的复制方法来做到这一点。funccopy(src,dststring)error{in,err:=os.Open(src)iferr!=nil{returnerr}deferin.Close()out,err:=os.Create(dst)iferr!=nil{returnerr}deferout.Close()_,err=io.Copy(out,in)iferr!=nil{returnerr}returnout.Close()}...copyErr:=copy(os.Args[0],"D:"+"\\"

postgresql - 如何使用 Go 从 csv 复制到 postgres?

我想将我的大型csv文件复制到Postgres。Schemacreatetabledoe(firstnametext,lastnametext,phonetext);CSV文件名字|姓氏|电话约翰|母鹿|55-55-555简|母鹿|66-66-666开始packagemainimport("fmt""os""os/exec")funcmain(){cmd:="psql"args:=fmt.Sprintf("-Upostgres-dtest-c\"\\copydoefrom'%s'delimiter'|'csvheader;\"",os.Args[1])iferr:=exec.Comma

go - Golang 接口(interface)上的指针接收器和值接收器

这个问题没有我想的那么清楚我会问一个更好的问题。但我不想在上面标记重复。所以我提出了我自己的问题。如果您可以帮助将其删除,以免混淆社区。请只做那些需要的。请不要对我投反对票。抱歉不清楚我是golang的新手,刚刚掌握它的窍门。我正在学习围棋之旅,然后根据自己的理解使用它。我在Interfaces,开始用自己的理解去实现。这是GoPlayGroundLink第1步:我创建了3种类型:int、struct和interfacepackagemainimport("fmt")typeMyIntinttypePairstruct{n1,n2int}typetwoTimeableinterface

pointers - 为什么Go允许将接口(interface)变量分配给未实现值接收者的值?

很抱歉,这个问题标题很混乱,但我有点不明白。在下面的代码中,当我们试图将x分配给p时会出现错误,因为x需要p来实现M(),而它没有,因为M()有指针接收器。typePersonstruct{NamestringAgeint}func(p*Person)M(){}typeIinterface{M()}funcmain(){varxIvarp:=Person{}x=p//Error,M()haspointerreceiver}这对我来说是有意义的。我不明白的是,在下面的示例中将x分配给&p是多么令人愉快。在本例中,M()有一个值接收器,而不是指针接收器,但它仍然可以正常工作。typePer

GO语言如何改变 map 指针内部对象的值

我该怎么做?我有对象列表,我想列出所有对象并更改对象名称。我有列表,我正在做一段时间发送到另一个函数,在那里我更改了名称,但名称没有保存。知道我该怎么做吗?https://play.golang.org/p/el3FtwC-3U如果有任何我可以阅读以了解更多信息的书籍,请。谢谢你帮助我=D 最佳答案 在范围循环中:for_,track:=rangetracks{//sendtracktochanneltochangethenameWorking(&track,&c)}track变量实际上是映射中包含的值的副本,因为这里的赋值作用于T

linux - 在多个 Golang 程序之间传递配置值

我对在多个golang程序之间传递配置值很感兴趣。我已经尝试过环境变量,但除了设置它们的程序外,其他程序无法读取它们。我已经测试过,我确定环境变量正在设置,并且可以在设置它的同一进程中读取。此外,如果我通过第一个过程调用第二个过程,它将打印出来:packagemainimport("bufio""fmt""os")funcmain(){os.Setenv("AVARIABLE","12345")reader:=bufio.NewReader(os.Stdin)fmt.Print("Entertext:")_,_=reader.ReadString('\n')fmt.Println("e